package cn.mavor.day0910;

import java.io.File;

public class DirectorySizeCalculator {

    public static void main(String[] args) {
        // 指定要计算大小的目录路径
        String directoryPath = "C:\\path\\to\\directory"; // 请根据实际情况修改此路径

        File directory = new File(directoryPath);

        if (!directory.exists() || !directory.isDirectory()) {
            System.out.println("指定的路径不是一个有效的目录！");
            return;
        }

        long directorySize = getDirectorySize(directory);
        System.out.println("目录 " + directoryPath + " 占用的空间大小为: " + directorySize + " 字节");
    }

    /**
     * 计算并返回目录的大小（字节）
     *
     * @param directory 目录
     * @return 目录大小（字节）
     */
    private static long getDirectorySize(File directory) {
        // 如果是文件，则直接返回文件大小
        if (directory.isFile()) {
            return directory.length();
        }

        // 如果是目录，则递归计算目录中所有文件和子目录的大小
        long size = 0;
        File[] files = directory.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isFile()) {
                    size += file.length();
                } else {
                    size += getDirectorySize(file); // 递归调用
                }
            }
        }
        return size;
    }
}